package com.simple.initializer;

import org.springframework.web.WebApplicationInitializer;

import javax.servlet.ServletContainerInitializer;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import java.util.Set;

/**
 * Servlet 3.0+容器启动时将自动扫描类路径以查找实现Spring的Webapplicationinitializer接口的所有实现，
 * 将其放进一个Set集合中，提供给ServletContainerInitializer中onStartup方法的第一个参数。
 * 这里可以拿到自定义的com.simple.initializer.MyWebApplicationInitializer并将其strat
 */
public class MySpringServletContainerInitializer implements ServletContainerInitializer {
    /**
     * Servlet 3.0+容器启动时将自动扫描类路径以查找实现Spring的Webapplicationinitializer接口的所有实现
     * 这里的set里就有定义好的 MyWebApplicationInitializer，将其实例化并调用onStartup()方法
     * @param set
     * @param servletContext
     * @throws ServletException
     */
    public void onStartup(Set<Class<?>> set, ServletContext servletContext) throws ServletException {
        if (set == null){
            return;
        }
        for (Class<?> webAppInitializerClass : set) {
            try {
                ((WebApplicationInitializer)webAppInitializerClass.newInstance()).onStartup(servletContext);
                System.out.println(webAppInitializerClass.getName());
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
    }
}
